#include <iostream>

using namespace std;

template <typename T>
class CMath{
public:
	CMath( T const& t1,T const t2 ) : m_t1(t1), m_t2(t2){}
	T add( ){
		return m_t1 + m_t2;
	}
//	T add();
private:
	T m_t1;
	T m_t2;
};

/*
template <typename T>
T CMath<T>::add(){
	return m_t1 + m_t2;
}
*/

int main( ) {
	int nx = 10, ny = 20;
	CMath<int> m1(nx, ny);
	cout << m1.add( ) << endl;

	double dx = 1.23, dy = 2.33;
	CMath<double> m2(dx, dy);
	cout << m2.add( ) << endl;

	return 0;
}
